The present invention relates to electronic systems which are comprised of: a) multiple personal computers, each of which is used by a particular member of a software development team, b) a communication network which couples the personal computers to a server computer, and c) a computer program which the server computer executes to thereby provide various services, to the team members, for managing their development of a software product. More particularly, the present invention relates to the internal structure and operation of the computer program for the server.
In the prior art, a new software product was often produced in several sequential phases. The initial phase was a “strategy phase” where certain basic requirements for the new software product were defined and where preliminary sales forecasts were made. Next, a “feasibility phase” occurred where an engineering analysis was made to determine if the new software product was technically feasible and economically practical. Then, a “design phase” occurred where a full product specification, a full marketing plan, and related schedules were produced. Next, a “development phase” occurred where a prototype software product was produced and tested to ensure that it met the product specification. Thereafter, a “production phase” occurred where the software product was mass-produced and shipped to customers.
When the above phases are performed, it is very important that the time period from the start of the strategy phase, to the start of the production phase, be as short as possible. This is because being first to the marketplace with a new software product is a major factor in being able to acquire a large market share over the competition. Also, the price of any software product in the marketplace typically is highest when the product is initially introduced ahead of any competing product.
In order to reduce the amount of time that passes from the start of the strategy phase, to the start of the production phase, the concept of an automated workflow can be used. Three particular documents on the subject of automated workflow, which were produced by a group called the Workflow Management Coalition (WFMC), are the following: 1) WORKFLOW MANAGEMENT COALITION, THE WORKFLOW REFERENCE MODEL, DOCUMENT #TC00-1003; 2) WORKFLOW MANAGEMENT COALITION, TERMINOLOGY AND GLOSSARY DOCUMENT #WFMC-TC-1011; 3) WORKFLOW MANAGEMENT COALITION, WORKFLOW CLIENT APPLICATION (INTERFACE 2) APPLICATION PROGRAMMING INTERFACE (WAPI) SPECIFICATION, DOCUMENT #WFMC-TC-1009.
The WFMC broadly defines “workflow” as “the automation of a business process, during which documents, information, or tasks are passed from one activity to another according to a defined business process”. However, when an attempt is made to automate the development of a software product by applying various mechanisms which are described in the above referenced documents, several major problems are encountered.
For example, to automate a workflow, the above documents describe “threads of control” which interconnect various “activities” with relationships that are called “OR-JOIN”, “OR-SPLIT”, “AND-JOIN”, and “AND-SPLIT”An “OR-JOIN” relationship occurs when “two or more activity workflow branches re-converge into a single thread of control without any synchronization”. An “OR-SPLIT” relationship occurs “when a single thread of control makes a decision upon which branch to take when encountered with multiple workflow branches”. An “AND-JOIN” relationship occurs “when two or more parallel executing activities converge into a single common thread of control”. An “AND-SPLIT” relationship occurs “when a single thread of control splits into two or more parallel activities”. This is explained in reference 1) above at pages 51–52.
However, the above “AND”/“OR” relationships in an automated workflow are not sufficient to minimize the time period that occurs between the start of the strategy phase and start of the production phase in the development of a new software product. To minimize that time period, one needs to be able to automate the scheduling of all of the tasks for all of the phases in a non-fixed, non-predictable order such that each task is started as soon as certain customized entry criteria are met. In addition, to implement the relationships among the tasks and phases of a software development project, by only using “threads of control”, is too restrictive.
Further, there are other factors that go beyond the mere joining of activities with automated relationships, which can reduce delays in the development of a software product. One such factor is the ability to trace a particular artifact that is generated, during one phase of the development of a software product, to other related artifacts that are generated in other phases. For example, a first artifact which defines a product requirement needs to be automatically linked to a second artifact which describes a proposal for meeting the requirement; and they need to be automatically linked to a third artifact which describes a functional design; and they need to be automatically linked to a fourth artifact which describes a technical design; and they need to be automatically linked to a fifth artifact which is the source code for the product. In addition, all of these artifacts need to be linked to respective records which show their review and approval history in order to expedite the resolution of any questions or issues which may arise. Here again the use of “threads of control” to try to accomplish all of this is too restrictive.
Also, another factor is the ability to easily share current information among members of a software development project. All artifacts which are in a software development project need to be electronically identified and electronically accessible to all members of the development team, no matter where they are located. Then, the project members can quickly get current project related information and participate in online discussions about the artifacts to resolve issues as soon as they arise.
Accordingly, a primary object of the present invention which is claimed herein is to provide a novel computer program, for use in automating the management of a software development project, which overcomes all of the above problems.